逆向APP的思路
界面分析
Cycript、Reveal代码分析
对Mach-O文件的静态分析
MachOView、class-dump、Hopper Disassembler、ida等动态调试
对运行中的APP进行代码调试
debugserver、LLDB代码编写
注入代码到APP中
必要时还可能需要重新签名、打包ipaclass-dump
顾名思义,它的作用就是把Mach-O文件的class信息给dump出来(把类信息给导出来),生成对应的.h头文件
下载完工具包后将class-dump文件复制到Mac的/usr/local/bin目录,这样在终端就能识别class-dump命令了
常用格式
class-dump -H Mach-O文件路径 -o 头文件存放目录
-H表示要生成头文件
-o用于制定头文件的存放目录
常见的Mach-O文件类型
MH_OBJECT
目标文件(.o)
静态库文件(.a),静态库其实就是N个.o合并在一起MH_EXECUTE:可执行文件
.app/xxMH_DYLIB:动态库文件
.dylib
.framework/xxMH_DYLINKER:动态链接编辑器
/usr/lib/dyldMH_DSYM:存储着二进制文件符号信息的文件
.dSYM/Contents/Resources/DWARF/xx(常用于分析APP的崩溃信息)Mach-O的基本结构
一个Mach-O文件包含3个主要区域
Header
文件类型、目标架构类型等Load commands
描述文件在虚拟内存中的逻辑结构、布局Raw segment data
在Load commands中定义的Segment的原始数据窥探Mach-O的结构
命令行工具
file:查看Mach-O的文件类型
file 文件路径otool:查看Mach-O特定部分和段的内容
lipo:常用于多架构Mach-O文件的处理
查看架构信息:lipo -info 文件路径
导出某种特定架构:lipo 文件路径 -thin 架构类型 -output 输出文件路径
合并多种架构:lipo 文件路径1 文件路径2 -output 输出文件路径GUI工具
MachOView